package main

import (
	"fmt"
	"math"
)

/**
类型转换
表达式 T(v) 将值 v 转换为类型 `T`。

一些关于数值的转换：

var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
或者，更加简单的形式：

i := 42
f := float64(i)
u := uint(f)
与 C 不同的是 Go 的在不同类型之间的项目赋值时需要显式转换。 试着移除例子中 float64 或 int 的转换看看会发生什么。
*/
func main() {
	var x, y int = 3, 4
	var f float64 = math.Sqrt(float64(x*x + y*y))
	var z int = int(f)
	fmt.Println(x, y, z)

	var i int = 50
	// 类型转换
	ix := float32(i)
	iq := uint64(i)
	fmt.Println(i, ix, iq)

	// 在不同类型之间的项目赋值时需要显式转换
	var gg float64 = math.Sqrt(float64(i*(i-1) + (i-3)*(i-2)))
	fmt.Printf("%T %v \n", gg, gg)
}
